﻿<Window x:Class="MarkupExtensionsForEvents.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:MarkupExtensionsForEvents"
        Title="MainWindow"
        Width="800"
        Height="350">
    <Window.DataContext>
        <local:MainWindowViewModel />
    </Window.DataContext>
    <Window.Resources>
        <BitmapImage x:Key="imgDefault" UriSource="Image/sample.jpg" />
    </Window.Resources>
    <Grid ShowGridLines="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>

        <StackPanel VerticalAlignment="Center">
            <TextBlock Text="GotFocusイベントが発生すると、ShowMessageCommandを呼び出します。" TextWrapping="WrapWithOverflow" />
            <TextBox Width="120"
                     Height="23"
                     Margin="0,0,0,30"
                     GotFocus="{local:InvokeCommand ShowMessageCommand}"
                     Text="TextBox"
                     TextWrapping="Wrap" />

            <TextBlock Text="MouseEnterイベントが発生すると、ShowMessageCommandを呼び出します。" TextWrapping="WrapWithOverflow" />
            <Rectangle Width="120"
                       Height="88"
                       Fill="#FFF4F4F5"
                       MouseEnter="{local:InvokeCommand ShowMessageCommand}"
                       Stroke="Black" />
        </StackPanel>

        <StackPanel Grid.Column="1">
            <TextBlock Text="Drop image file here." />
            <Image Grid.Row="1"
                   AllowDrop="True"
                   Drop="{local:InvokeCommand DropFileCommand}"
                   Source="{Binding ImagePath,
                                    TargetNullValue={StaticResource imgDefault}}" />
        </StackPanel>

        <!--  コレクション走査のテスト  -->
        <Grid Grid.Column="2">
            <TextBlock Margin="5"
                       VerticalAlignment="Top"
                       Text="Showボタンを押すと、リストで選択された子要素のVMのコマンドを実行します。"
                       TextWrapping="Wrap" />
            <ListBox Margin="10,40,10,60"
                     DisplayMemberPath="Name"
                     IsSynchronizedWithCurrentItem="True"
                     ItemsSource="{Binding List}" />
            <Slider Margin="10,30"
                    VerticalAlignment="Bottom"
                    LargeChange="10"
                    Maximum="100"
                    SmallChange="1"
                    Value="{Binding List/Value}" />
            <Button Width="75"
                    Margin="5"
                    HorizontalAlignment="Right"
                    VerticalAlignment="Bottom"
                    Click="{local:InvokeCommand List/ShowValueCommand}"
                    Content="Show" />
        </Grid>
    </Grid>
</Window>
